home *** CD-ROM | disk | FTP | other *** search
- /* @(#)windowimpl.h 20.83 93/06/28 SMI */
-
- /***********************************************************************/
- /* window_impl.h */
- /*
- * (c) Copyright 1989 Sun Microsystems, Inc. Sun design patents
- * pending in the U.S. and foreign countries. See LEGAL NOTICE
- * file for terms of the license.
- */
- /***********************************************************************/
-
- #ifndef window_impl_DEFINED
- #define window_impl_DEFINED
-
- #include <sys/types.h>
- #include <sys/time.h>
-
- #include <xview/font.h>
- #include <xview/pkg.h>
- #define _NOTIFY_MIN_SYMBOLS
- #include <xview/notify.h>
- #undef _NOTIFY_MIN_SYMBOLS
- #include <xview/rect.h>
- #include <xview/rectlist.h>
-
- /* BUG: try to get rid of win_struct.h */
- #include <xview/win_struct.h>
- #include <xview/win_input.h>
- #include <xview/window.h>
- #include <X11/Xutil.h>
-
- #include <xview/cursor.h>
- #include <xview_private/draw_impl.h>
- #include <xview_private/xv_list.h>
- #include <xview_private/portable.h>
- #include <xview/dragdrop.h>
-
- #ifdef OW_I18N
- #include <xview_private/i18n_impl.h>
- #endif
-
- #define window_attr_next(attr) (Window_attribute *)attr_next((caddr_t *)attr)
-
- /*
- MAX_FUNC_KEY is maximum number of function keys + number of buttons in the
- mouse.
- */
- #define MAX_KEYCODE 128
- #define BITS_PER_BYTE 8
- #define WINDOW_KEYMASK (MAX_KEYCODE/((sizeof(char))* BITS_PER_BYTE))
-
- #define DEFAULT_X_Y 0
- #define DEFAULT_WIDTH_HEIGHT 64
-
- /* For the rect of the window */
- #define EMPTY_VALUE 0x7fff
-
-
- #define WIN_DEFAULT_RECT(_rect) (((_rect)->r_left == DEFAULT_X_Y) && \
- ((_rect)->r_top == DEFAULT_X_Y) && \
- ((_rect)->r_width == DEFAULT_WIDTH_HEIGHT) && \
- ((_rect)->r_height == DEFAULT_WIDTH_HEIGHT))
-
- #define WIN_PRIVATE(win) XV_PRIVATE(Window_info, Xv_window_struct, win)
- #define WIN_PUBLIC(win) XV_PUBLIC(win)
-
- #define WIN_SET_DEAF(_win_info, flag) (_win_info->deaf = flag)
- #define WIN_IS_DEAF(_win_info) (_win_info->deaf)
-
- #define WIN_SET_LOOP(_win_info, flag) (_win_info->window_loop = flag)
- #define WIN_IS_LOOP(_win_info) (_win_info->window_loop)
-
- #ifdef OW_I18N
- #define WIN_SET_GRAB(_win_info, flag) (_win_info->active_grab = flag)
- #define WIN_IS_GRAB(_win_info) (_win_info->active_grab)
-
- #define WIN_SET_PASSIVE_GRAB(_win_info, flag) (_win_info->passive_grab = flag)
- #define WIN_IS_PASSIVE_GRAB(_win_info) (_win_info->passive_grab)
- #endif /* OW_I18N */
-
- /* windows are in charge of their own borders */
-
- /***********************************************************************/
- /* Structures */
- /***********************************************************************/
- typedef struct window_client_msg {
- Xv_opaque type;
- unsigned char format;
- union {
- char b[WIN_MESSAGE_DATA_SIZE];
- short s[WIN_MESSAGE_DATA_SIZE/sizeof(short)];
- int l[WIN_MESSAGE_DATA_SIZE/sizeof(int)];
- } data;
- } Window_client_msg;
-
- typedef struct win_drop_site_list {
- Xv_sl_link next;
- Xv_drop_site drop_item;
- } Win_drop_site_list;
-
- typedef enum win_drop_site_mode {
- Win_Drop_Site,
- Win_Drop_Interest,
- } Win_drop_site_mode;
-
- typedef struct window_info {
- Xv_Window public_self; /* back pointer to public struct */
- int (*layout_proc)();
- void (*event_proc)();
- void (*notify_safe_event_proc)();
- void (*notify_immediate_event_proc)();
- struct window_info *owner;
- Xv_Window parent;
- Xv_opaque menu;
- Xv_font font;
- Xv_Font glyph_font; /* OL glyph font for window's scale */
- int desired_width;
- int desired_height;
- Xv_Cursor cursor;
- Xv_Cursor normal_cursor; /* A place to store normal cursor */
- /* when switching to busy cursor */
- Xv_opaque client_data;
- Rect cache_rect;
- unsigned int xmask; /* X event mask */
- int scale;
- char *cmdline;
- Pixmap background_pixmap;
- Window_client_msg client_message; /* Client Message Info */
- Win_drop_site_list *dropSites; /* Drop sites in the window */
- Win_drop_site_list *dropInterest; /* Only used in top-level windows.
- * Holds the list of drop items. */
-
- /* margin info */
- short top_margin;
- short bottom_margin;
- short left_margin;
- short right_margin;
- short row_height;
- short column_width;
- short row_gap;
- short column_gap;
-
- /* flags */
- unsigned has_kbd:1;
- unsigned map:1; /* change to map when ready */
- unsigned rect_info:4; /* x, y, width, or height set */
- unsigned top_level:1;
- unsigned top_level_no_decor:1; /* does window have decors */
- unsigned created:1;
- unsigned has_border:1; /* does window have border */
- unsigned being_rescaled:1;
- unsigned input_only:1; /* is the window input only */
- unsigned transparent:1; /* is background pixmap=None */
- unsigned in_fullscreen_mode:1; /* window in fullscreen mode */
- unsigned is_client_pane:1; /* is the window a client pane */
- unsigned x_paint_window:1; /* window used for X graphics */
- unsigned inherit_colors:1;
- unsigned no_clipping:1; /* dont set clip rects on repaint */
- unsigned collapse_exposures:1; /* colapse expose events */
- /* into a single event. */
- /* count = 0 */
- unsigned collapse_motion_events:1; /* colapse motion events */
- unsigned deaf:1; /* is window deaf? */
- unsigned window_loop:1; /* is window in window_loop? */
- unsigned softkey_flag:1; /* is soft key labels set? */
- #ifdef OW_I18N
- unsigned win_use_im:1; /* does window need an input method? */
- unsigned ic_conversion:1; /* is IC conversion on */
- unsigned ic_created:1; /* is IC created */
- unsigned ic_active:1; /*is IC active? for read-only modes */
- unsigned active_grab:1; /* is window in active grab */
- unsigned passive_grab:1; /* is window in passive grab
- */
-
- /* input method data */
- XIC xic; /* X Input Context (IC) */
- XID ic_focus_win; /* IC focus window */
- XID tmp_ic_focus_win; /* temp IC focus window */
- char *win_ic_committed; /* mbyte implicit commit string */
- wchar_t *win_ic_committed_wcs;/*widec implicit commit string */
- XIMCallback start_pecb_struct; /* preedit start callback */
- XIMCallback draw_pecb_struct; /* preedit draw callback */
- XIMCallback caret_pecb_struct; /* preedit caret callback */
- XIMCallback done_pecb_struct; /* preedit done callback */
- XIMCallback start_stcb_struct; /* status start callback */
- XIMCallback draw_stcb_struct; /* status draw callback */
- XIMCallback done_stcb_struct; /* status done callback */
- #ifdef FULL_R5
- unsigned long x_im_style_mask; /* X input method style mask */
- #endif /* FULL_R5 */
- #endif /* OW_I18N */
-
- } Window_info;
-
-
- /*
- * Package private
- */
-
- #define actual_row_height(win) \
- (win->row_height ? win->row_height : \
- xv_get(win->font, FONT_DEFAULT_CHAR_HEIGHT))
-
- #ifdef OW_I18N
- #define actual_column_width(win) \
- (win->column_width ? win->column_width : \
- xv_get(win->font, FONT_COLUMN_WIDTH))
- #else /* OW_I18N */
- #define actual_column_width(win) \
- (win->column_width ? win->column_width : \
- xv_get(win->font, FONT_DEFAULT_CHAR_WIDTH))
- #endif /* OW_I18N */
-
- #define actual_rescale_row_height(par,win) \
- (win->row_height ? win->row_height : \
- xv_get(par->font, FONT_DEFAULT_CHAR_HEIGHT))
-
- #ifdef OW_I18N
- #define actual_rescale_column_width(par,win) \
- (win->column_width ? win->column_width : \
- xv_get(par->font, FONT_COLUMN_WIDTH))
- #else /* OW_I18N */
- #define actual_rescale_column_width(par,win) \
- (win->column_width ? win->column_width : \
- xv_get(par->font, FONT_DEFAULT_CHAR_WIDTH))
- #endif /* OW_I18N */
-
- /* window.c */
- Pkg_private Notify_value window_default_event_func();
- Xv_private int window_getrelrect();
-
- /* window_set.c */
- Pkg_private Xv_opaque window_set_avlist();
- Pkg_private int win_appeal_to_owner();
-
- /* window_get.c */
- Pkg_private Xv_opaque window_get_attr();
-
- /* window_layout.c */
- Pkg_private int window_layout();
-
- /* window_compat.c */
- Xv_private void window_scan_and_convert_to_pixels();
-
- /* windowdrop.c */
- Pkg_private void win_add_drop_item();
- Pkg_private Xv_opaque win_delete_drop_item();
- Pkg_private void win_add_drop_interest();
- Pkg_private void win_update_dnd_property();
- Xv_private Xv_opaque win_get_top_level();
-
- /* windowutil.c */
- Xv_private void win_set_wm_command();
- Xv_private void win_set_wm_class();
- Xv_private int window_set_tree_flag();
- Xv_private int window_set_tree_child_flag();
- Xv_private int window_set_flag_cursor();
-
-
- #endif /* ~window_impl_DEFINED */
-